Substantially orthogonal codes, such as the CCK codes used in IEEE standard 802.11b on wireless local area networks, are a class of channel codes that exhibit good auto-correlation and cross-correlation properties. In this type of code, the auto-correlation function of each codeword has a peak amplitude at zero-shift, and a small amplitude at other shifts. The cross-correlation function between different codewords has a small amplitude at all shifts. Because of those nice properties, decoding for this type of code has always been done through codeword correlation.
FIG. 1 shows a block diagram for a prior-art communication system 100 with a CCK code and with such a conventional decoder that is based on codeword correlation. In the transmitter of system 100, the input data are first encoded by CCK encoder 101 to become a sequence of symbols, {Pn}. Each symbol, Pn, is typically selected from a two-dimensional signal constellation. The symbol is then used to modulate the in-phase and quadrature-phase amplitudes of a single carrier through modulator 103 in the usual way and transmitted to multi-path channel 105 in the nth signaling interval, each interval being T seconds long. Two examples for the CCK code are those used in IEEE standard 802.11b on the wireless local area network.
In the first example, encoder 101 takes in 8 data bits each time and uses them to select a codeword, (C0, C1, C2, C3, C4, C5, C6, C7), from a codebook with 256 (=28) codewords, where each Ci, i=0, 1, . . . , or 7, is a symbol of a 4-PSK signal constellation. The eight symbols, C0, C1, . . . , and C7, of the selected codeword are then used by modulator 103 (as Pn, Pn+1, . . . , and Pn+7 for some n in FIG. 1) and transmitted to channel 105 in eight successive signaling intervals. When the four symbols of the 4-PSK are specified by ejπ/4, ej3π/4, ej5π/4, and ej7π/4 (that is, when the X and Y coordinates of the four symbols of the 4-PSK are specified by the real and imaginary parts of the complex numbers, ejπ/4, ej3π/4, ej5π/4, and ej7π/4, respectively), the codebook of 256 codewords is given by the set, {ej(φ1+φ2+φ3+φ4), ej(φ1+φ3+φ4), ej(φ1+φ2+φ4), −ej(φ1+φ4), ej(φ1+φ2+φ3), ej(φ1+φ3), −ej(φ1+φ2), ejφ1}, where φ1ε{π/4, 3π/4, 5π/4, 7π/4}, and φ2, φ3, and φ4ε{0, π/2, π, 3π/2}.
In the second example, encoder 101 takes in only 4 data bits each time and uses them to select a codeword, (C0, C1, . . . , C7), from a codebook with 16 (=24) codewords, where each Ci, i=0, 1, . . . , or 7, is again a symbol of a 4-PSK signal constellation. The codebook in this case is given by the set, {(ej(φ1+φ2+φ4), ej(φ1+φ4), ej(φ1+φ2+φ4), −ej(φ1+φ4), ej(φ1+φ2), ejφ1+, −ej(φ1+φ2), ejφ1)}, where φ1ε{π/4, 3π/4, 5π/4, 7π/4}, φ2ε{π/2, 3π/2}, and φ4ε{0, π}.
Each of the two codebooks above is constructed so that its different codewords are nearly orthogonal to each other. Before the present invention, this orthogonal property of the CCK code has been invariably used for its decoding, as discussed below. With a signaling rate 1/T of 11 M symbols per second, the CCK codes in the first and second examples above can be used to transmit data at 11 and 5.5 Mbps, respectively. For convenience, they are referred to hereinafter as the 11- and 5.5-Mbps CCK codes.
In the receiver of system 100, the received signal r(t) is first processed by demodulator 107, whose output is a sequence of channel-impaired symbols, {{tilde over (P)}n}. Note that the output of demodulator 107 may be sampled at a rate higher than the signaling rate 1/T. For easy discussion, that output is sampled at the signaling rate here and in the detailed description below. The impairments typically include additive noise and intersymbol interference (ISI) that is caused by multi-path channel 105. When the ISI is not severe, conventional CCK decoder 111 can be applied directly to the channel-impaired symbols {{tilde over (P)}n} to recover each transmitted codeword, (C0, C1, . . . , C7), and its associated input data.
Conventional CCK decoder 111 is based on codeword correlation, which is in turn based on the orthogonal property of the CCK code. Roughly speaking, in decoder 111, a bank of correlators, each being associated with a codeword of the CCK code, are applied to each channel-impaired received codeword, ({tilde over (C)}0, {tilde over (C)}1, . . . , {tilde over (C)}7), which is ({tilde over (P)}n, {tilde over (P)}n+, . . . {tilde over (P)}n+7) for some n. The codeword whose correlator has the largest output is then decided to be the transmitted codeword.
When standard 802.11b was first established, it was thought that CCK decoder 111 could handle the ISI of channel 105 by itself. However, as the ISI got worse, it was found that CCK decoder 111 alone was not sufficient and an equalizer was needed. In the worse case, a decision feedback equalizer (DFE) was necessary.
FIG. 1 shows perhaps the most advanced receiver, before the present invention, that uses a DFE to receive a CCK-encoded signal. In this receiver, each received channel-impaired symbol, {tilde over (P)}n, is first passed through traditional feedforward equalizer 109 to become Qn, (shown as Q12 for n=12 in FIG. 1). Feedforward equalizer 109 is typically meant to remove the ISI from the future transmitted symbols, Pn+1, Pn+2, and so on, that is contained in {tilde over (P)}n.
Feedback equalizer 113 is then used to remove the ISI from the past transmitted symbols, Pn−1, Pn−2, and so on, that is contained in Qn. The resulting received signal sample, Rn (shown as R12 for n=12 in FIG. 1), which is ideally ISI-free, is then sent to both of conventional CCK decoder 111 and tentative decision maker 115 for further processing. Conventional CCK decoder 111 that is based on codeword correlation operates in the same way as before. It first uses a bank of correlators to operate on the eight received signal samples, Rn, Rn+1, . . . , and Rn+7 for some n, that correspond to a transmitted codeword. It next makes final decisions on all the eight symbols, Pn, Pn+1, . . . , and Pn+7, of the transmitted codeword simultaneously. Those final decisions are then sent to feedback equalizer 113 to remove the ISI of the past symbols, Pn, Pn+1, . . . , and Pn+7, that is contained in Qn+8, Qn+9 and so on.
Note, however, that the final decisions on the first seven symbols, Pn, Pn+1, . . . and Pn+6, of the codeword are not available to feedback equalizer 113 until the signal sample Rn+7 is received by CCK decoder 111. In other words, not all the final decisions on the past symbols are available to feedback equalizer 113 when one wants to remove their ISI that is contained in Qn+1, Qn+2, . . . , or Qn+7. This creates a chicken-egg problem. To obtain the ideally ISI-free received signal samples, Rn+1, Rn+2, . . . and Rn+7, one needs to get first reliable final decisions on Pn, Pn+1, . . . , and Pn+6. However, to obtain those reliable final decisions on Pn, Pn+1, . . . , and Pn+6, one needs to get first those ideally ISI-free received signal samples, Rn+1, Rn+2, . . . and Rn+7.
To solve this chicken-egg problem, tentative decision maker 115 is used to provide tentative decisions on the past transmitted symbols, Pn−1, Pn−2, and so on, to feedback equalizer 113 when the final decisions on those symbols are not available from CCK decoder 111. For example, assume that the first transmitted codeword is (P0, P1, . . ., P7), and the second transmitted codeword is (P8, P9, . . . , P15). Referring to FIG. 1, in the 12th signaling interval (i.e., n=12), the final decisions on all the eight symbols of the first codeword are available from CCK decoder 111. Those final decisions, designated as P0(f), P1(f), . . . , and P7(f), are sent to feedback equalizer 113. However, the final decisions on the past symbols, P8, P9, . . . , P11, of the second codeword are not yet available from CCK decoder 111. In this case, tentative decision maker 115 will provide tentative decisions, designated as P8(t), P9(t), . . . , and P11(t), on those symbols to feedback equalizer 113.
A simple and popular approach for tentative decision maker 115 operates as follows: In each nth signal interval, it finds the symbol from the signal constellation that is closest to the ideally ISI-free received signal sample, Rn. It then uses that symbol as the tentative decision on the current symbol, Pn. A problem with this approach is that the tentative decision is much less reliable than the final decision. An error in the tentative decision, Pn(t), will propagate through the feedback equalizer. As a result, instead of removing the ISI of the symbol Pn that is contained in the received signal samples, Qn+1, Qn+2, and so on, the error will add more ISI to those received signal samples. This error propagation effect defeats the purpose of using a DFE to remove the intersymbol interference in the received signal and will often make the subsequent operation of CCK decoder 111 useless. That is, once an error is made in a tentative decision, the extra noise added to the following received signal samples, Rn+1, Rn+2, and so on, is often beyond the error correcting capability of CCK decoder 111.